package com.audaque.springboot.foshanupload.authcore.util;

import lombok.extern.slf4j.Slf4j;
import org.hibernate.validator.internal.util.StringHelper;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.util.Objects;

/**
 * @author 实现一个客户端用同一个session
 * @date 2020/3/27 14:09
 **/
@Slf4j
public class SessionUtils {


    public static String getSessionId(HttpServletRequest request  ) {
        // request为空返回null
        if (Objects.isNull(request)) {
            return null;
        }
        // 优先取请求里的JSSESSIONID
        String sessionId = request.getRequestedSessionId();
        log.debug("优先取请求里的JSSESSIONID:"+sessionId);
        // 如果为空，需要新建一个
        if (StringHelper.isNullOrEmptyString(sessionId)) {
            //将所有request请求都携带上httpSession
            //HttpServletRequest.getSession(false) 等同于 如果当前Session没有就为null；
            //getSession()相当于getSession(true);会检测当前时候是否有session存在，如果不存在则创建一个，如果存在就返回当前的。
            HttpSession httpSession = request.getSession();
            // 为空返回null
            if (Objects.isNull(httpSession)) {
                return null;
            }
            sessionId = httpSession.getId();
            log.debug("request.getSession(:"+sessionId);
        }
        return sessionId;
    }



}
